package com.hq.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
	private static final String STR="aqwertyuiopsdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
	private static final String NUM="1234567890";
	//如果希望随机的汉字 都是常用在 我们可以准备一个常用字的字符串提供随机的汉字数据
	
//	判断源字符串是否有值，空引号也算没值ֵ
	// 方法的格式  修饰符  返回值类型  方法名(参数列表)
	public static boolean hasText(String string) {
		return string!=null&&!"".equals(string);
	}
//	判断源字符串是否有值，空引号和空格也算没值
	public static boolean hasTextAndSpace(String string) {
		return string!=null&&!"".equals(string.trim());
	}
//	判断是否为手机号码
	public static boolean isPhone(String phone) {
		//正则验证֤
		//1:Pattern.compile
//		Pattern compile = Pattern.compile("");
//		Matcher matcher = compile.matcher(phone);
//		boolean matches = matcher.matches();
		// 2:Pattern.matchers()
//		boolean matches = Pattern.matches("", phone);
		// Stirng验证֤
		if(hasTextAndSpace(phone)) {
			String reg_phone="^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";
			boolean matches2 = phone.matches(reg_phone);
			return matches2;
		}
		return false;
	}
	
	
	//判断是否为电子邮箱
	public static boolean isEmail(String email) {
		//判断是否为null 或者“”
		if(hasTextAndSpace(email)) {
			String reg_email="^\\w+@\\w+(.com.cn|.com|.net)$";
			boolean matches = email.matches(reg_email);
			return matches;
		}
		return false;
	}
	
	//判断是否全部为字母
	public static boolean isLetter(String letter) {
		// 1:按照ASCII码的方式  65~90 97~122
		//2:ֱ使用正则做验证
		if(hasTextAndSpace(letter)) {
			String reg_email="^[a-zA-Z]+$";
			boolean matches = letter.matches(reg_email);
			return matches;
		}else {
			return false;
		}
	}
	
	//获取n位随机英文字符串
	public static String getString(int n) {
		//1:按照ASCII码的方式  65~90 97~122
		//2:通过提供的字符串随机取字符
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<n;i++) {
			int num=(int)(Math.random()*(STR.length()));
			char charAt = STR.charAt(num);
			sb.append(charAt);
		}
		return sb.toString();
	}
	
	//	获取n位随机英文和数字字符串
	public static String getStringAndNum(int n) {
		
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<n;i++) {
			int num=(int)(Math.random()*((STR+NUM).length()));
			char charAt = (STR+NUM).charAt(num);
			sb.append(charAt);
		}
		return sb.toString();
	}
	
	//	获取n个随机中文字符串
	public static String getChinese(int n) {
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<n;i++) {
			int min = Integer.parseInt("4e00",16);
			int max = Integer.parseInt("9fa5",16);
			// 指定范围[最小值，最大值)随机数公式 ：     Math.random()*(最大值-最小值)+最小值
			// 指定范围[最小值，最大值]随机数公式 ：	Math.random()*(最大值-最小值+1)+最小值
			int num=(int)(Math.random()*(max-min+1)+min);
			sb.append((char)num);
		}
		return sb.toString();
	}
}
